﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Escuela
{
    public partial class MateriaForm : Form
    {
        private string materiaId;
        private string materiaNombre;
        public int aceptar;
        private Instituto inst;
        
        public MateriaForm(Instituto inst)
        {
            this.inst = inst;
            materiaId = "";
            materiaNombre = "";
            InitializeComponent();
        }

        private void TipoCurso_Load(object sender, EventArgs e)
        {
            try
            {
                // TODO: This line of code loads data into the 'escuelaDataSet.coop_materia_GetAll' table. You can move, or remove it, as needed.
                this.coop_materia_GetAllTableAdapter.Fill(this.escuelaDataSet.coop_materia_GetAll);

                this.enlazarDataGrid();


                this.enableBtn();

                this.disabletxt();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error cargando formulario", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

        }

        private void Nuevo_Click(object sender, EventArgs e)
        {
            try
            {
                
                enabletxt();
                cleartxt();
                disableBtn();
                this.btAceptar.Enabled = true;
                this.aceptar = 1;
                this.Nuevo.Enabled = false;
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error al crear materia " + ex.Message);
            }
        }

        private void Editar_Click(object sender, EventArgs e)
        {
            if (this.textDescrip.Text != "")
            {
                try
                {
                    materiaNombre = textBoxNombre.Text.Trim();
                    enabletxt();
                    disableBtn();
                    //ActivoCheck.Visible = true;
                    this.btAceptar.Enabled = true;
                    this.btCancelar.Enabled = true;
                    this.Nuevo.Enabled = false;
                    this.Editar.Enabled = false;

                    this.Borrar.Enabled = false;
                    this.aceptar = 2;
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Excepcion al editar materia " + ex.Message, "Error");
                }
            }
            else
            {
                MessageBox.Show("Debe seleccionar una materia", "Advertencia");
            }
        }

        /// <summary>
        /// boton aceptar
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button4_Click(object sender, EventArgs e)
        {
            switch (this.aceptar)
            {
                #region Nuevo
                case 1:
                    this.agregarMAteria();
                    break;
                #endregion
                #region editar
                case 2:

                    this.modificarMateria();
                    break;
                #endregion
                #region borrar
                case 3:

                    this.eliminarMateria();
                    break;
                #endregion
                
            }

        }

        /// <summary>
        /// agrega la materia al sitema
        /// </summary>
        private void agregarMAteria()
        {
            try
            {
                if (!String.IsNullOrEmpty(textBoxNombre.Text.Trim()) && !String.IsNullOrEmpty(textDescrip.Text.Trim()))
                {


                    Materia materia = new Materia();

                    materia.Nombre = this.textBoxNombre.Text.Trim();
                    materia.CantidadHoras = Convert.ToInt32(this.txtHoras.Text.Trim());
                    materia.Descripcion = this.textDescrip.Text.Trim();

                    if (this.inst.darDeAltaMateria(materia))
                    {
                        MessageBox.Show("Materia agregada con Exito", "Exito", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        this.coop_materia_GetAllTableAdapter.Fill(this.escuelaDataSet.coop_materia_GetAll);
                        //this.cleartxt();
                        //this.disableBtn();
                        this.enableBtn();
                        this.disabletxt();
                    }
                    else
                    {
                        MessageBox.Show("Error al agregar materia verifique los datos ingresados", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Excepxion al guardar materia" + ex, "Error");
            }
        }

        private void modificarMateria()
        {
            try
            {
                if (!String.IsNullOrEmpty(textBoxNombre.Text.Trim()) && !String.IsNullOrEmpty(txtHoras.Text.Trim()) && !String.IsNullOrEmpty(textDescrip.Text.Trim()))
                {

                    Materia mat = new Materia();

                    mat.Nombre = textBoxNombre.Text.Trim();
                    mat.Descripcion = textDescrip.Text.Trim();
                    mat.CantidadHoras = Convert.ToInt32(txtHoras.Text.Trim());
                    //mat.Activo = Convert.ToBoolean(ActivoCheck.Checked);
                    mat.Id = Convert.ToInt32(txtId.Text.Trim());
                    //mat.Id = 2;
                    int verif = inst.modificarMateria(mat, materiaNombre);
                    if (verif != -1)
                    {
                        MessageBox.Show("Materia modificada con Exito");
                        
                        //recargo la grilla
                        this.coop_materia_GetAllTableAdapter.Fill(this.escuelaDataSet.coop_materia_GetAll);

                        this.enableBtn();
                        this.disabletxt();
                        


                    }
                    else
                    {
                        MessageBox.Show("Error al modificar materia", "Error");
                        this.disableBtn();
                        //this.cleartxt();
                        this.disabletxt();
                    }
                    // TODO: esta línea de código carga datos en la tabla 'escuelaDataSet1.tipoCursos' Puede moverla o quitarla según sea necesario.
                    //this.tipoCursosTableAdapter.Fill(this.escuelaDataSet1.tipoCursos);
                }
            }

            catch (Exception ex)
            {
                MessageBox.Show("Excepcion al modificar Clase" + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void eliminarMateria()
        {
            try
            {

                Materia mat = new Materia();
                mat.Nombre = textBoxNombre.Text.Trim();
                mat.Descripcion = textDescrip.Text.Trim();
                mat.CantidadHoras = Convert.ToInt32(txtHoras.Text.Trim());
                //mat.Activo = Convert.ToBoolean(ActivoCheck.Checked);
                mat.Id = Convert.ToInt32(this.txtId.Text);
                inst.darDeBajaMateria(mat);
                MessageBox.Show("Materia eliminada", "Exito", MessageBoxButtons.OK, MessageBoxIcon.Information);
                
                this.coop_materia_GetAllTableAdapter.Fill(this.escuelaDataSet.coop_materia_GetAll);
                this.enableBtn();
                this.disabletxt();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Se produjo una excepcion al eliminar materia" + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void enlazarDataGrid()
        {
            try
            {
                //texto
                this.textBoxNombre.DataBindings.Add("Text", dataGridView1.DataSource, "nombre");
                this.txtHoras.DataBindings.Add("Text", dataGridView1.DataSource, "cantidad_horas");
                this.textDescrip.DataBindings.Add("Text", dataGridView1.DataSource, "descripcion");
                this.txtId.DataBindings.Add("Text", dataGridView1.DataSource, "id"); 
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error enlazando datos al DataGrid. " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }


        }

        //private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        //{
        //    try
        //    {
        //        //int i = this.dataGridView1.CurrentRow.Index;
        //        int i = e.RowIndex;
        //        if (i >= 0)
        //        {
                    
        //            //string nroCurso = dataGridView1.Rows[i].Cells[0].Value.ToString();
        //            //this.maskedNroCur.Text = nroCurso.Trim();
                    
        //            string Nombre = dataGridView1.Rows[i].Cells[0].Value.ToString();
        //            this.textBoxNombre.Text = Nombre.Trim();

        //            string DurHoras = dataGridView1.Rows[i].Cells[2].Value.ToString();
        //            this.txtHoras.Text = DurHoras.Trim();

        //            string Descripcion = dataGridView1.Rows[i].Cells[1].Value.ToString();
        //            this.textDescrip.Text = Descripcion.Trim();
        //            materiaId = dataGridView1.Rows[i].Cells[4].Value.ToString();

        //            bool ActivoC = (bool)(dataGridView1.Rows[i].Cells[3].Value);
        //            if (ActivoC)
        //            {
        //                //ActivoCheck.Checked = true;
        //            }
        //            else
        //            {
        //                //ActivoCheck.Checked = false;

        //            }
        //            this.Nuevo.Enabled = false;
        //            this.Editar.Enabled = true;
        //            this.Borrar.Enabled = true;
        //        }

        //    }
        //    catch (Exception ex)
        //    {
        //        MessageBox.Show("Error a cargar datos desde el Dataview: " + ex);
        //    }
        //}

        private void btCancelar_Click(object sender, EventArgs e)
        {
            cleartxt();
            this.disabletxt();
            this.enableBtn();
            
        }

        /// <summary>
        /// Habilita los campos para editar y el boton aceptar
        /// </summary>
        protected void enabletxt()
        {
            this.textBoxNombre.Enabled = true;
            this.textDescrip.Enabled = true;
            
            this.txtHoras.Enabled = true;
            this.btAceptar.Enabled = true;
            this.btCancelar.Enabled = true;
                
        }
        /// <summary>
        /// Deshabilita los campos
        /// </summary>
        protected void disabletxt()
        {
            this.textBoxNombre.Enabled = false;
            this.textDescrip.Enabled = false;
            this.txtHoras.Enabled = false;
            //this.btAceptar.Enabled = false;
        }

        /// <summary>
        /// Borra la info de los txt
        /// </summary>
        protected void cleartxt()
        {

            this.textBoxNombre.Clear();
            this.textDescrip.Clear();
            this.txtHoras.Clear();
        }

        /// <summary>
        /// habilita aceptar y cancelar y deshabilita los otros botones
        /// </summary>
        protected void disableBtn()
        {
            this.btAceptar.Enabled = true;
            this.btCancelar.Enabled = true;
            this.Nuevo.Enabled = false;
            this.Editar.Enabled = false;
            this.Borrar.Enabled = false;
        }

        /// <summary>
        /// Habilita el nuevo, editar, borrar
        /// </summary>
        protected void enableBtn()
        {
            this.btAceptar.Enabled = false;
            this.btCancelar.Enabled = false;
            this.Nuevo.Enabled = true;
            this.Editar.Enabled = true;
       
            this.Borrar.Enabled = true;
        }

        private void Borrar_Click(object sender, EventArgs e)
        {
           
                this.aceptar = 3;
                disableBtn();
                this.disabletxt();
                
                
            
        }

        protected void limpiarBox()
        {
            this.txtHoras.Clear();
            this.textBoxNombre.Clear();
            this.textDescrip.Clear();
        }
        
        protected void disableBox()
        {
            this.textDescrip.Enabled = false;
            this.txtHoras.Enabled = false;
            this.textBoxNombre.Enabled = false;
        }

        
    }
}
